import request from '@/utils/request'

// 导入mock数据
import {
	publishBlog as mockPublishBlog,
	saveDraft as mockSaveDraft,
	schedulePublish as mockSchedulePublish,
	uploadImage as mockUploadImage,
	getDrafts as mockGetDrafts,
	getDraftDetail as mockGetDraftDetail,
	mockBlogCategories,
	mockBlogTags
} from '../mock/blog-publish.js';

export default {

	/**
	 * 发布博客
	 * @param {Object} blogData - 博客数据
	 * @returns {Promise} - 返回发布结果
	 */
	publishBlog(blogData) {
		// 在实际环境中，这里应该调用真实的API
		// return http.post('/hub/blog/publish', blogData);

		// 使用mock数据模拟发布博客
		return mockPublishBlog(blogData);
	},

	/**
	 * 保存草稿
	 * @param {Object} blogData - 博客数据
	 * @returns {Promise} - 返回保存结果
	 */
	saveDraft(blogData) {
		// 在实际环境中，这里应该调用真实的API
		// return http.post('/hub/blog/draft/save', blogData);

		// 使用mock数据模拟保存草稿
		return mockSaveDraft(blogData);
	},

	/**
	 * 定时发布博客
	 * @param {Object} blogData - 博客数据
	 * @param {string} publishTime - 定时发布时间
	 * @returns {Promise} - 返回定时发布结果
	 */
	schedulePublish(blogData, publishTime) {
		// 在实际环境中，这里应该调用真实的API
		// return http.post('/hub/blog/schedule', { ...blogData, publishTime });

		// 使用mock数据模拟定时发布
		return mockSchedulePublish(blogData, publishTime);
	},

	/**
	 * 上传图片
	 * @param {string} tempFilePath - 临时文件路径
	 * @param {string} type - 图片类型（cover/article）
	 * @returns {Promise} - 返回上传结果
	 */
	uploadImage(tempFilePath, type = 'article') {
		// 在实际环境中，这里应该调用真实的API
		// return http.upload('/hub/blog/image/upload', {
		//   filePath: tempFilePath,
		//   name: 'image',
		//   formData: { type }
		// });

		// 使用mock数据模拟上传图片
		return mockUploadImage(tempFilePath, type);
	},

	/**
	 * 获取草稿列表
	 * @returns {Promise} - 返回草稿列表
	 */
	getDrafts() {
		// 在实际环境中，这里应该调用真实的API
		// return http.get('/hub/blog/drafts');

		// 使用mock数据模拟获取草稿列表
		return mockGetDrafts();
	},

	/**
	 * 获取草稿详情
	 * @param {string} draftId - 草稿ID
	 * @returns {Promise} - 返回草稿详情
	 */
	getDraftDetail(draftId) {
		// 在实际环境中，这里应该调用真实的API
		// return http.get(`/hub/blog/draft/${draftId}`);

		// 使用mock数据模拟获取草稿详情
		return mockGetDraftDetail(draftId);
	},

	/**
	 * 获取博客分类
	 * @returns {Promise} - 返回博客分类
	 */
	getBlogCategories() {
		// 在实际环境中，这里应该调用真实的API
		// return http.get('/hub/blog/categories');

		// 使用mock数据返回博客分类
		return new Promise((resolve) => {
			setTimeout(() => {
				resolve({
					code: 0,
					message: 'success',
					data: mockBlogCategories
				});
			}, 100);
		});
	}
}

/**
 * 获取博客标签
 * @returns {Promise} - 返回博客标签
 */
export function getBlogTags() {
	return request({
		url: '/interest/list',
		method: 'get',
	});
}